package manager;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

import util.HibernateFactory;

import dao.PessoaDAO;

import entity.Pessoa;

@ManagedBean(name="pessoaManager")
@SessionScoped
public class PessoaManager {
	
	
	private Pessoa pessoa;
	private Pessoa pessoaSelecionada;
	private PessoaDAO pessoaDAO;
	private boolean novaPessoa;
	private List<Pessoa> pessoas;
	protected FacesContext context = FacesContext.getCurrentInstance();  
	protected HttpServletRequest request = (HttpServletRequest) context  
      .getExternalContext().getRequest();  
	
	public PessoaManager()
	{
		pessoa = new Pessoa();
		pessoaSelecionada = new Pessoa();
		pessoaDAO = new PessoaDAO();
		pessoas = pessoaDAO.listarPessoas();
		novaPessoa = true;
	}
	
	

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	} 
	
	public String editar()
	{
		pessoaSelecionada = (Pessoa) request.getAttribute("pessoaTab");
		pessoa = pessoaSelecionada;
		novaPessoa = false;
		return "editarPessoa";
	}
	
	public void salvar()
	{
		FacesContext contexto = FacesContext.getCurrentInstance();
		novaPessoa = pessoa.getId() != null ? false : true;
		pessoaDAO.salvar(pessoa);
		if(novaPessoa)
		{
			FacesMessage faces = new FacesMessage("Pessoa cadastrada com sucesso!");
			contexto.addMessage(null, faces);
		}
		else
		{
			FacesMessage faces = new FacesMessage("Pessoa atualizada com sucesso!");
			contexto.addMessage(null, faces);
		}
		limparCampos();
	}

	public PessoaDAO getPessoaDAO() {
		return pessoaDAO;
	}

	public void setPessoaDAO(PessoaDAO pessoaDAO) {
		this.pessoaDAO = pessoaDAO;
	}
	
	public void limparCampos()
	{
		pessoa = new Pessoa();
	}

	public boolean isNovaPessoa() {
		return novaPessoa;
	}

	public void setNovaPessoa(boolean novaPessoa) {
		this.novaPessoa = novaPessoa;
	}

	public List<Pessoa> getPessoas() {
		return pessoas;
	}

	public void setPessoas(List<Pessoa> pessoas) {
		this.pessoas = pessoas;
	}



	public Pessoa getPessoaSelecionada() {
		return pessoaSelecionada;
	}



	public void setPessoaSelecionada(Pessoa pessoaSelecionada) {
		this.pessoaSelecionada = pessoaSelecionada;
	}
	
}
